export interface TreeNodeFile {
  Icon: string;
  Name: string;
  Active: boolean;
}

export interface TreeNode {
  Name: string;
  Icon: string;
  Expanded: boolean;
  Files: TreeNodeFile[];
}

export interface Suggestion {
  // Name
  n: string;
  // Code
  c: string;
  // Pinyin
  p: string;
}

export interface AppConfig {
  // 生产环境
  production: boolean;
  // 认证服务器
  authUrl: string;
  // 客户端 oidc id
  clientId: string;
  // mrview api
  mrviewUrl: string;
  // 科研调阅 API
  researchUrl: string;
  // 查询URL
  queryUrl: string;
  // 查询类型
  queryType: string[];
  // 编目项类型
  cataloguesType: string[];
  // 高亮关键字
  highLightKeywords: string[];
  // 一次并发项目
  asyncOccurItems: string[];
  // 主模式项目
  mainModeItems: string[];
}

export class User {
  CreateTime: string;
  DefaultDepCode: string;
  DefaultDepName: string;
  DefaultDepPinyin: string;
  DoctorType: string;
  Email: string;
  EmployeeId: string;
  Grade: string;
  LastLoginTime: string;
  Mobile: string;
  Name: string;
  Note: string;
  PinyinShort: string;
  Temp: string;
  Title: string;
  TotalOnLineTime: string;
  UserCode: string;
  UserId: string;
  UserName: string;

  constructor(
    CreateTime?: string,
    DefaultDepCode?: string,
    DefaultDepName?: string,
    DefaultDepPinyin?: string,
    DoctorType?: string,
    Email?: string,
    EmployeeId?: string,
    Grade?: string,
    LastLoginTime?: string,
    Mobile?: string,
    Name?: string,
    Note?: string,
    PinyinShort?: string,
    Temp?: string,
    Title?: string,
    TotalOnLineTime?: string,
    UserCode?: string,
    UserId?: string,
    UserName: string = 'test'
  ) {
    this.CreateTime = CreateTime ? CreateTime : '';
    this.DefaultDepCode = DefaultDepCode ? DefaultDepCode : '';
    this.DefaultDepName = DefaultDepName ? DefaultDepName : '';
    this.DefaultDepPinyin = DefaultDepPinyin ? DefaultDepPinyin : '';
    this.DoctorType = DoctorType ? DoctorType : '';
    this.Email = Email ? Email : '';
    this.EmployeeId = EmployeeId ? EmployeeId : '';
    this.Grade = Grade ? Grade : '';
    this.LastLoginTime = LastLoginTime ? LastLoginTime : '';
    this.Mobile = Mobile ? Mobile : '';
    this.Name = Name ? Name : '';
    this.Note = Note ? Note : '';
    this.PinyinShort = PinyinShort ? PinyinShort : '';
    this.Temp = Temp ? Temp : '';
    this.Title = Title ? Title : '';
    this.TotalOnLineTime = TotalOnLineTime ? TotalOnLineTime : '';
    this.UserCode = UserCode ? UserCode : '';
    this.UserId = UserId ? UserId : '';
    this.UserName = UserName ? UserName : '';
  }
}
export interface Department {
  DepartmentId: string;
  Name: string;
  Note: string;
  ParentId: string;
  Phone: string;
  Principle: string;
  PrincipleId: string;
}
export interface ScientificGroup {
  Id: string;
  Name: string;
  ParentId: string;
  Memo: string;
  CreateTime: string;
  GroupType: string;
}
export interface ValidRole {
  Name: string;
  Positive: boolean;
  Description: string;
}
export interface Permission {
  User: User;
  DepartmentList: Department[];
  GroupList: Group[];
  ModuleList: string[];
  ScopeList: string[];
  ValidRoleList: ValidRole[];
}
export interface Role {
  Id: string;
  Name: string;
  IsEnable: boolean;
  Description: string;
  ParentId: string;
}
export interface Scope {
  ScopeId: string;
  Name: string;
  IsEnable: boolean;
  Type: string;
  Value: string;
}

export interface Parameter {
  Name: string;
  Value: string;
  Memo: string;
}

export interface Group {
  Relation: string;
  Name: string;
  Grade: number;
}
